/**
 * 结束界面
 * 负责处理结束界面的交互逻辑
 */
class EndScreen {
    constructor(game) {
        // 游戏实例引用
        this.game = game;
        
        // 结束界面元素
        this.screen = document.getElementById('end-screen');
        
        // 重新开始按钮
        this.restartButton = document.getElementById('restart-btn');
        
        // 返回主页按钮
        this.homeButton = document.getElementById('home-btn');
        
        // 音频管理器
        this.audioManager = new AudioManager();
        
        // 初始化事件监听
        this.initEventListeners();
    }
    
    /**
     * 初始化事件监听
     */
    initEventListeners() {
        // 重新开始按钮点击事件
        if (this.restartButton) {
            this.restartButton.addEventListener('click', () => {
                // 播放点击音效
                this.audioManager.playSound('click');
                
                // 重新开始游戏
                this.game.start(this.game.difficulty);
            });
        }
        
        // 返回主页按钮点击事件
        if (this.homeButton) {
            this.homeButton.addEventListener('click', () => {
                // 播放点击音效
                this.audioManager.playSound('click');
                
                // 返回主页
                this.game.reset();
                
                // 显示开始界面
                const uiManager = new UIManager(this.game);
                uiManager.showScreen('start');
            });
        }
    }
    
    /**
     * 显示结束界面
     * @param {boolean} success 是否成功
     * @param {Object} stats 游戏统计数据
     */
    show(success, stats) {
        // 设置结果标题
        const resultElement = document.getElementById('game-result');
        if (resultElement) {
            resultElement.textContent = success ? '恭喜完成！' : '被警察抓住了！';
            resultElement.style.color = success ? '#2ecc71' : '#e74c3c';
        }
        
        // 更新统计数据
        document.getElementById('final-wpm').textContent = `${Math.round(stats.wpm)} WPM`;
        document.getElementById('final-accuracy').textContent = `${Math.round(stats.accuracy)}%`;
        document.getElementById('final-time').textContent = this.formatTime(stats.time);
        document.getElementById('final-score').textContent = stats.score;
        
        // 播放结束音效
        if (success) {
            this.audioManager.playSound('success');
        } else {
            this.audioManager.playSound('fail');
        }
        
        // 保存高分
        this.saveHighScore(stats);
    }
    
    /**
     * 格式化时间
     * @param {number} seconds 秒数
     * @returns {string} 格式化后的时间字符串 (MM:SS)
     */
    formatTime(seconds) {
        const minutes = Math.floor(seconds / 60);
        const remainingSeconds = Math.floor(seconds % 60);
        return `${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;
    }
    
    /**
     * 保存高分
     * @param {Object} stats 游戏统计数据
     */
    saveHighScore(stats) {
        const storage = new Storage();
        storage.saveScore(this.game.difficulty, stats.score, {
            wpm: stats.wpm,
            accuracy: stats.accuracy,
            time: stats.time,
            completed: stats.completed
        });
    }
    
    /**
     * 隐藏结束界面
     */
    hide() {
        // 可以添加隐藏动画等
    }
} 